﻿/**
 *
 * @file    AppendCompound.h
 * @brief   AppendCompound Python接口封装
 * @author  fulipeng (fulipengqd@yeah.net)
 * @date    2024-10-25
 *
 */

#ifndef  __PYINTERFACE_PRIMITIVESAPPENDCOMPOUND_H___
#define  __PYINTERFACE_PRIMITIVESAPPENDCOMPOUND_H___

#include <QString>
#include <QObject>
#include <QVariantMap>
#include "WrapperDataObject.h"
#include "WrapperTools.h"
#include "PythonInterfaceAPI.h"

namespace Interface
{
    class FITKAbsGeoCommand;
    class FITKGeoCommandList;
    class FITKAbsGeoModelOperCompound;
}

/**
 * @brief   AppendCompound数据封装类
 * @author  fulipeng (fulipengqd@yeah.net)
 * @date    2024-10-23
 */
class AppendCompound : public WrapperDataObject
{
public:
    explicit AppendCompound(int id = 0);
    explicit AppendCompound(Interface::FITKAbsGeoModelOperCompound* AppendCompound);
    virtual ~AppendCompound() = default;

    /**
     * @brief   获取类名
     * @author  fulipeng (fulipengqd@yeah.net)
     * @date    2024-10-24
     */
    virtual const QString getClassName() override;

    /**
     * @brief   设置输入命令ID
     * @param   name
     * @return  status
     * @author  fulipeng (fulipengqd@yeah.net)
     * @date    2024-10-24
     */
    bool setInputCmdId(int cmdId);

    /**
     * @brief   设置添加的形状ID
     * @param   cmdIds 距离
     * @return  status
     * @author  fulipeng (fulipengqd@yeah.net)
     * @date    2024-10-24
     */
    bool setShapeCmdIds(QList<int> cmdIds);

private:
    /**
     * @brief   装饰数据对象
     * @author  fulipeng (fulipengqd@yeah.net)
     * @date    2024-10-23
     */
    Interface::FITKAbsGeoModelOperCompound* m_appendCompound{};
};

/**
 * @brief   AppendCompound数据装饰器类
 * @author  fulipeng (fulipengqd@yeah.net)
 * @date    2024-10-23
 */
class PythonInterfaceAPI AppendCompoundWrapper : public WrapperDataObjectWrapper
{
    Q_OBJECT
public:
    explicit AppendCompoundWrapper() = default;
    virtual ~AppendCompoundWrapper() = default;

public slots:

    /**
     * @brief   新建装饰数据对象
     * @author  fulipeng (fulipengqd@yeah.net)
     * @date    2024-10-24
     */
    AppendCompound* new_AppendCompound();

    /**
     * @brief   销毁装饰数据对象
     * @author  fulipeng (fulipengqd@yeah.net)
     * @date    2024-10-24
     */
    void delete_AppendCompound(AppendCompound* obj);

    /**
     * @brief   设置输入命令名称
     * @param   obj
     * @param   name 名称
     * @author  fulipeng (fulipengqd@yeah.net)
     * @date    2024-10-25
     */
    void setInputCmdName(AppendCompound* obj, const QString& name);

    /**
     * @brief   设置添加的形状ID
     * @param   obj
     * @param   name 名称
     * @author  fulipeng (fulipengqd@yeah.net)
     * @date    2024-10-24
     */
    void setAppendCmdName(AppendCompound* obj, const QString& name);

    /**
     * @brief   更新数据
     * @param   obj
     * @param   p1[3] xyz
     * @param   p2[3] xyz
     * @author  fulipeng (fulipengqd@yeah.net)
     * @date    2024-10-24
     */
    void update(AppendCompound* obj);

    /**
     * @brief   创建AppendCompound
     * @return  AppendCompound
     * @author  fulipeng (fulipengqd@yeah.net)
     * @date    2024-10-24
     */
    AppendCompound* static_AppendCompound_Create();

private:

};


#endif
